<?php

if (!defined('BASEPATH'))
    exit('No direct script access allowed');

class reporteMigracion extends CI_Controller {

    private $establecimiento;

    public function __construct() {
        parent::__construct();
        session_start();
        $this->estaLogueado();
        $this->verificarPermiso();
        $this->load->model('_clienteM');
        $this->establecimiento = $_SESSION["establecimiento"]["id_establecimiento"];
        // $this->exportar("hola que mas ji");
    }

    public function index() {
        $data = array();
        $this->loadData($data);
        $this->load->view('header', $data);
        $this->load->view('reporteMigracionV');
        $this->load->view('footer');
    }

    public function loadData(&$data) {
        $data["tab"] = "reporteMigracion";
    }

    public function exportar() {

        if (!empty($_POST)) {
            $reporte = $this->getCabeceras();
            $reporte.= $this->getCuerpo($_POST['reporte']);
            $this->descargar($reporte, $_POST['reporte']);
        } else {
            header("location:../ReporteMigracion");
        }
    }

    private function getCabeceras() {
        $content = "{$this->pad("codigo del hotel")}{$this->pad("codigo de ciudad")}{$this->pad("Tipo de documento")}{$this->pad("Numero de identificacion")}{$this->pad("Codigo de nacionalidad")}{$this->pad("Primer apellido")}{$this->pad("Segundo apellido")}{$this->pad("Nombre del extranjero")}{$this->pad("Tipo de movimiento")}{$this->pad("Fecha de movimiento")}{$this->pad("Lugar de procedencia")}{$this->pad("Lugar de destino")}{$this->pad("Fecha de nacimiento")}";
        return $content;
    }

    private function getCuerpo($fecha) {
        $this->formatoFechaBD($fecha);
        $result = $this->_clienteM->getReporteMigracion($this->establecimiento, $fecha);
        //   sizeof($result);
        $str = "\n";
        foreach ($result as $data) {
            $tipo = ($data->fecha_ingreso == $fecha) ? "E" : "S";
            if (($tipo == "E" && $data->checkin_realizado == 1) || (($tipo == "S" && $data->checkout_realizado == 1))) {
                $str.="{$this->pad($data->codigo_migracion)}{$this->pad($data->ciudad)}{$this->pad($data->codigo)}{$this->pad($data->identificacion)}{$this->pad($data->id_pais)}{$this->pad($data->primer_apellido)}{$this->pad($data->segundo_apellido)}{$this->pad($data->name)}{$this->pad($tipo)}{$this->pad($fecha)}{$this->pad($this->setPaisOrCiudad($data->pais_procedencia, $data->ciudad_procedencia))}{$this->pad($this->setPaisOrCiudad($data->pais_destino, $data->ciudad_destino))}{$this->pad($data->fecha_nacimiento)}";
                $str.="\n";
            }
        }
        $str.="";
        return $str;
    }

    private function setPaisOrCiudad($pais, $ciudad) {
        return $pais == 169 ? $ciudad : $pais;
    }

    private function descargar($data, $fecha) {
        $this->formatoFechaBD($fecha);
        $fileName = "reporteMigracion {$fecha}.txt";
        header("Content-Type:text/html; charset=utf-8");
        $file = fopen($fileName, "w");
        fwrite($file, $data);
        fclose($file);
        $fichero = "./$fileName";
        header("Content-Description: File Transfer");
        header("Content-Disposition: filename=" . basename($fichero));
        header("Content-Length: " . filesize($fichero));
        header("Content-Type: application/force-download");
        @readfile($fichero);
        unlink($fileName);
    }

    private function verificarPermiso() {
        $this->load->model('permisom');
        $permisos = $this->permisom->obtenerPermisos($_SESSION["establecimiento"]["id_establecimiento"]);
        if (sizeof($permisos) == 0 || $permisos[0]->migracion == 0) {
            header("location: " . base_url() . "getservice?s=migracion");
            exit();
        }
    }

}
